//=====================================================================================================
// MadgwickAHRS.h
//=====================================================================================================
//
// Implementation of Madgwick's IMU and AHRS algorithms.
// See: http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms
//
// Date			Author          Notes
// 29/09/2011	SOH Madgwick    Initial release
// 02/10/2011	SOH Madgwick	Optimised for reduced CPU load
//
//=====================================================================================================
#ifndef MadgwickAHRS_h
#define MadgwickAHRS_h

//----------------------------------------------------------------------------------------------------
// Variable declaration

//extern volatile double beta;				
//extern volatile double q0, q1, q2, q3;	// quaternion of sensor frame relative to auxiliary frame

class MadgwickAHRS
{
 private:
  double beta;         // algorithm gain
  double sample_period;

 public:
  double q0,q1,q2,q3;

  MadgwickAHRS(double sampleT, double beta);

//---------------------------------------------------------------------------------------------------
// Function declarations

void AHRSupdate(double gx, double gy, double gz, 
		double ax, double ay, double az, 
		double mx, double my, double mz);
void AHRSupdateIMU(double gx, double gy, double gz, 
		   double ax, double ay, double az);
};
#endif
//=====================================================================================================
// End of file
//=====================================================================================================
